\subsection{图像预处理}
\subsubsection{ImageDataGenerator类}\label{imagedatagenerator}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.ImageDataGenerator(featurewise_center}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             samplewise_center}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             featurewise_std_normalization}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             samplewise_std_normalization}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             zca_whitening}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             zca_epsilon}\OperatorTok{=}\FloatTok{1e-06}\NormalTok{, }
\NormalTok{                                             rotation_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             width_shift_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             height_shift_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             brightness_range}\OperatorTok{=}\VariableTok{None}\NormalTok{, }
\NormalTok{                                             shear_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             zoom_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             channel_shift_range}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             fill_mode}\OperatorTok{=}\StringTok{'nearest'}\NormalTok{, }
\NormalTok{                                             cval}\OperatorTok{=}\FloatTok{0.0}\NormalTok{, }
\NormalTok{                                             horizontal_flip}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             vertical_flip}\OperatorTok{=}\VariableTok{False}\NormalTok{, }
\NormalTok{                                             rescale}\OperatorTok{=}\VariableTok{None}\NormalTok{, }
\NormalTok{                                             preprocessing_function}\OperatorTok{=}\VariableTok{None}\NormalTok{, }
\NormalTok{                                             data_format}\OperatorTok{=}\VariableTok{None}\NormalTok{, }
\NormalTok{                                             validation_split}\OperatorTok{=}\FloatTok{0.0}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

通过实时数据增强生成张量图像数据批次。数据将不断循环（按批次）。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{featurewise\_center}: 布尔值。将输入数据的均值设置为
  0，逐特征进行。
\item
  \textbf{samplewise\_center}: 布尔值。将每个样本的均值设置为 0。
\item
  \textbf{featurewise\_std\_normalization}: Boolean.
  布尔值。将输入除以数据标准差，逐特征进行。
\item
  \textbf{samplewise\_std\_normalization}:
  布尔值。将每个输入除以其标准差。
\item
  \textbf{zca\_epsilon}: ZCA 白化的 epsilon 值，默认为 1e-6。
\item
  \textbf{zca\_whitening}: 布尔值。是否应用 ZCA 白化。
\item
  \textbf{rotation\_range}: 整数。随机旋转的度数范围。
\item
  \textbf{width\_shift\_range}: 浮点数、一维数组或整数

  \begin{itemize}
  \tightlist
  \item
    float: 如果 \textless{}1，则是除以总宽度的值，或者如果
    \textgreater{}=1，则为像素值。
  \item
    1-D 数组: 数组中的随机元素。
  \item
    int: 来自间隔 \texttt{(-width\_shift\_range,\ +width\_shift\_range)}
    之间的整数个像素。
  \item
    \texttt{width\_shift\_range=2} 时，可能值是整数
    \texttt{{[}-1,\ 0,\ +1{]}}，与
    \texttt{width\_shift\_range={[}-1,\ 0,\ +1{]}} 相同；而
    \texttt{width\_shift\_range=1.0} 时，可能值是
    \texttt{{[}-1.0,\ +1.0)} 之间的浮点数。
  \end{itemize}
\item
  \textbf{height\_shift\_range}: 浮点数、一维数组或整数

  \begin{itemize}
  \tightlist
  \item
    float: 如果 \textless{}1，则是除以总宽度的值，或者如果
    \textgreater{}=1，则为像素值。
  \item
    1-D array-like: 数组中的随机元素。
  \item
    int: 来自间隔
    \texttt{(-height\_shift\_range,\ +height\_shift\_range)}
    之间的整数个像素。
  \item
    \texttt{height\_shift\_range=2} 时，可能值是整数
    \texttt{{[}-1,\ 0,\ +1{]}}，与
    \texttt{height\_shift\_range={[}-1,\ 0,\ +1{]}} 相同；而
    \texttt{height\_shift\_range=1.0} 时，可能值是
    \texttt{{[}-1.0,\ +1.0)} 之间的浮点数。
  \end{itemize}
\item
  \textbf{shear\_range}: 浮点数。剪切强度（以弧度逆时针方向剪切角度）。
\item
  \textbf{zoom\_range}: 浮点数 或
  \texttt{{[}lower,\ upper{]}}。随机缩放范围。如果是浮点数，\texttt{{[}lower,\ upper{]}\ =\ {[}1-zoom\_range,\ 1+zoom\_range{]}}。
\item
  \textbf{channel\_shift\_range}: 浮点数。随机通道转换的范围。
\item
  \textbf{fill\_mode}: \{``constant'', ``nearest'', ``reflect'' or
  ``wrap''\} 之一。默认为
  `nearest'。输入边界以外的点根据给定的模式填充：

  \begin{itemize}
  \tightlist
  \item
    `constant': kkkkkkkk\textbar{}abcd\textbar{}kkkkkkkk (cval=k)
  \item
    `nearest': aaaaaaaa\textbar{}abcd\textbar{}dddddddd
  \item
    `reflect': abcddcba\textbar{}abcd\textbar{}dcbaabcd
  \item
    `wrap': abcdabcd\textbar{}abcd\textbar{}abcdabcd
  \end{itemize}
\item
  \textbf{cval}: 浮点数或整数。用于边界之外的点的值，当
  \texttt{fill\_mode\ =\ "constant"} 时。
\item
  \textbf{horizontal\_flip}: 布尔值。随机水平翻转。
\item
  \textbf{vertical\_flip}: 布尔值。随机垂直翻转。
\item
  \textbf{rescale}: 重缩放因子。默认为 None。如果是 None 或
  0，不进行缩放，否则将数据乘以所提供的值（在应用任何其他转换之前）。
\item
  \textbf{preprocessing\_function}:
  应用于每个输入的函数。这个函数会在任何其他改变之前运行。这个函数需要一个参数：一张图像（秩为
  3 的 Numpy 张量），并且应该输出一个同尺寸的 Numpy 张量。
\item
  \textbf{data\_format}: 图像数据格式，\{``channels\_first'',
  ``channels\_last''\} 之一。``channels\_last''
  模式表示图像输入尺寸应该为
  \texttt{(samples,\ height,\ width,\ channels)}，``channels\_first''
  模式表示输入尺寸应该为
  \texttt{(samples,\ channels,\ height,\ width)}。默认为 在 Keras
  配置文件 \texttt{\textasciitilde{}/.keras/keras.json} 中的
  \texttt{image\_data\_format} 值。如果你从未设置它，那它就是
  ``channels\_last''。
\item
  \textbf{validation\_split}: 浮点数。Float.
  保留用于验证的图像的比例（严格在0和1之间）。
\end{itemize}

\textbf{例子}

使用 \texttt{.flow(x,\ y)} 的例子：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{(x_train, y_train), (x_test, y_test) }\OperatorTok{=}\NormalTok{ cifar10.load_data()}
\NormalTok{y_train }\OperatorTok{=}\NormalTok{ np_utils.to_categorical(y_train, num_classes)}
\NormalTok{y_test }\OperatorTok{=}\NormalTok{ np_utils.to_categorical(y_test, num_classes)}

\NormalTok{datagen }\OperatorTok{=}\NormalTok{ ImageDataGenerator(}
\NormalTok{    featurewise_center}\OperatorTok{=}\VariableTok{True}\NormalTok{,}
\NormalTok{    featurewise_std_normalization}\OperatorTok{=}\VariableTok{True}\NormalTok{,}
\NormalTok{    rotation_range}\OperatorTok{=}\DecValTok{20}\NormalTok{,}
\NormalTok{    width_shift_range}\OperatorTok{=}\FloatTok{0.2}\NormalTok{,}
\NormalTok{    height_shift_range}\OperatorTok{=}\FloatTok{0.2}\NormalTok{,}
\NormalTok{    horizontal_flip}\OperatorTok{=}\VariableTok{True}\NormalTok{)}

\CommentTok{# 计算特征归一化所需的数量}
\CommentTok{# （如果应用 ZCA 白化，将计算标准差，均值，主成分）}
\NormalTok{datagen.fit(x_train)}

\CommentTok{# 使用实时数据增益的批数据对模型进行拟合：}
\NormalTok{model.fit_generator(datagen.flow(x_train, y_train, batch_size}\OperatorTok{=}\DecValTok{32}\NormalTok{),}
\NormalTok{                    steps_per_epoch}\OperatorTok{=}\BuiltInTok{len}\NormalTok{(x_train) }\OperatorTok{/} \DecValTok{32}\NormalTok{, epochs}\OperatorTok{=}\NormalTok{epochs)}

\CommentTok{# 这里有一个更 「手动」的例子}
\ControlFlowTok{for}\NormalTok{ e }\KeywordTok{in} \BuiltInTok{range}\NormalTok{(epochs):}
    \BuiltInTok{print}\NormalTok{(}\StringTok{'Epoch'}\NormalTok{, e)}
\NormalTok{    batches }\OperatorTok{=} \DecValTok{0}
    \ControlFlowTok{for}\NormalTok{ x_batch, y_batch }\KeywordTok{in}\NormalTok{ datagen.flow(x_train, y_train, batch_size}\OperatorTok{=}\DecValTok{32}\NormalTok{):}
\NormalTok{        model.fit(x_batch, y_batch)}
\NormalTok{        batches }\OperatorTok{+=} \DecValTok{1}
        \ControlFlowTok{if}\NormalTok{ batches }\OperatorTok{>=} \BuiltInTok{len}\NormalTok{(x_train) }\OperatorTok{/} \DecValTok{32}\NormalTok{:}
            \CommentTok{# 我们需要手动打破循环，}
            \CommentTok{# 因为生成器会无限循环}
            \ControlFlowTok{break}
\end{Highlighting}
\end{Shaded}

使用 \texttt{.flow\_from\_directory(directory)} 的例子：

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{train_datagen }\OperatorTok{=}\NormalTok{ ImageDataGenerator(}
\NormalTok{        rescale}\OperatorTok{=}\FloatTok{1.}\OperatorTok{/}\DecValTok{255}\NormalTok{,}
\NormalTok{        shear_range}\OperatorTok{=}\FloatTok{0.2}\NormalTok{,}
\NormalTok{        zoom_range}\OperatorTok{=}\FloatTok{0.2}\NormalTok{,}
\NormalTok{        horizontal_flip}\OperatorTok{=}\VariableTok{True}\NormalTok{)}

\NormalTok{test_datagen }\OperatorTok{=}\NormalTok{ ImageDataGenerator(rescale}\OperatorTok{=}\FloatTok{1.}\OperatorTok{/}\DecValTok{255}\NormalTok{)}

\NormalTok{train_generator }\OperatorTok{=}\NormalTok{ train_datagen.flow_from_directory(}
        \StringTok{'data/train'}\NormalTok{,}
\NormalTok{        target_size}\OperatorTok{=}\NormalTok{(}\DecValTok{150}\NormalTok{, }\DecValTok{150}\NormalTok{),}
\NormalTok{        batch_size}\OperatorTok{=}\DecValTok{32}\NormalTok{,}
\NormalTok{        class_mode}\OperatorTok{=}\StringTok{'binary'}\NormalTok{)}

\NormalTok{validation_generator }\OperatorTok{=}\NormalTok{ test_datagen.flow_from_directory(}
        \StringTok{'data/validation'}\NormalTok{,}
\NormalTok{        target_size}\OperatorTok{=}\NormalTok{(}\DecValTok{150}\NormalTok{, }\DecValTok{150}\NormalTok{),}
\NormalTok{        batch_size}\OperatorTok{=}\DecValTok{32}\NormalTok{,}
\NormalTok{        class_mode}\OperatorTok{=}\StringTok{'binary'}\NormalTok{)}

\NormalTok{model.fit_generator(}
\NormalTok{        train_generator,}
\NormalTok{        steps_per_epoch}\OperatorTok{=}\DecValTok{2000}\NormalTok{,}
\NormalTok{        epochs}\OperatorTok{=}\DecValTok{50}\NormalTok{,}
\NormalTok{        validation_data}\OperatorTok{=}\NormalTok{validation_generator,}
\NormalTok{        validation_steps}\OperatorTok{=}\DecValTok{800}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

同时转换图像和蒙版 (mask) 的例子。

\begin{Shaded}
\begin{Highlighting}[]
\CommentTok{# 创建两个相同参数的实例}
\NormalTok{data_gen_args }\OperatorTok{=} \BuiltInTok{dict}\NormalTok{(featurewise_center}\OperatorTok{=}\VariableTok{True}\NormalTok{,}
\NormalTok{                     featurewise_std_normalization}\OperatorTok{=}\VariableTok{True}\NormalTok{,}
\NormalTok{                     rotation_range}\OperatorTok{=}\FloatTok{90.}\NormalTok{,}
\NormalTok{                     width_shift_range}\OperatorTok{=}\FloatTok{0.1}\NormalTok{,}
\NormalTok{                     height_shift_range}\OperatorTok{=}\FloatTok{0.1}\NormalTok{,}
\NormalTok{                     zoom_range}\OperatorTok{=}\FloatTok{0.2}\NormalTok{)}
\NormalTok{image_datagen }\OperatorTok{=}\NormalTok{ ImageDataGenerator(}\OperatorTok{**}\NormalTok{data_gen_args)}
\NormalTok{mask_datagen }\OperatorTok{=}\NormalTok{ ImageDataGenerator(}\OperatorTok{**}\NormalTok{data_gen_args)}

\CommentTok{# 为 fit 和 flow 函数提供相同的种子和关键字参数}
\NormalTok{seed }\OperatorTok{=} \DecValTok{1}
\NormalTok{image_datagen.fit(images, augment}\OperatorTok{=}\VariableTok{True}\NormalTok{, seed}\OperatorTok{=}\NormalTok{seed)}
\NormalTok{mask_datagen.fit(masks, augment}\OperatorTok{=}\VariableTok{True}\NormalTok{, seed}\OperatorTok{=}\NormalTok{seed)}

\NormalTok{image_generator }\OperatorTok{=}\NormalTok{ image_datagen.flow_from_directory(}
    \StringTok{'data/images'}\NormalTok{,}
\NormalTok{    class_mode}\OperatorTok{=}\VariableTok{None}\NormalTok{,}
\NormalTok{    seed}\OperatorTok{=}\NormalTok{seed)}

\NormalTok{mask_generator }\OperatorTok{=}\NormalTok{ mask_datagen.flow_from_directory(}
    \StringTok{'data/masks'}\NormalTok{,}
\NormalTok{    class_mode}\OperatorTok{=}\VariableTok{None}\NormalTok{,}
\NormalTok{    seed}\OperatorTok{=}\NormalTok{seed)}

\CommentTok{# 将生成器组合成一个产生图像和蒙版（mask）的生成器}
\NormalTok{train_generator }\OperatorTok{=} \BuiltInTok{zip}\NormalTok{(image_generator, mask_generator)}

\NormalTok{model.fit_generator(}
\NormalTok{    train_generator,}
\NormalTok{    steps_per_epoch}\OperatorTok{=}\DecValTok{2000}\NormalTok{,}
\NormalTok{    epochs}\OperatorTok{=}\DecValTok{50}\NormalTok{)}
\end{Highlighting}
\end{Shaded}






\hypertarget{imagedatagenerator-ux7c7bux65b9ux6cd5}{%
\subsubsection{ImageDataGenerator类方法}\label{imagedatagenerator-ux7c7bux65b9ux6cd5}}

\hypertarget{apply_transform}{%
\paragraph{apply\_transform}\label{apply_transform}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.apply_transform(x, transform_parameters)}
\end{Highlighting}
\end{Shaded}

根据给定的参数将变换应用于图像。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{x}: 3D 张量，单张图像。
\item
  \textbf{transform\_parameters}: 字符串 - 参数
  对表示的字典，用于描述转换。目前，使用字典中的以下参数：

  \begin{itemize}
  \tightlist
  \item
    `theta': 浮点数。旋转角度（度）。
  \item
    `tx': 浮点数。在 x 方向上移动。
  \item
    `ty': 浮点数。在 y 方向上移动。
  \item
    shear': 浮点数。剪切角度（度）。
  \item
    `zx': 浮点数。放大 x 方向。
  \item
    `zy': 浮点数。放大 y 方向。
  \item
    `flip\_horizontal': 布尔 值。水平翻转。
  \item
    `flip\_vertical': 布尔值。垂直翻转。
  \item
    `channel\_shift\_intencity': 浮点数。频道转换强度。
  \item
    `brightness': 浮点数。亮度转换强度。
  \end{itemize}
\end{itemize}

\textbf{返回}

输入的转换后版本（相同尺寸）。


\hypertarget{fit}{%
\paragraph{fit}\label{fit}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.fit(x, augment}\OperatorTok{=}\VariableTok{False}\NormalTok{, rounds}\OperatorTok{=}\DecValTok{1}\NormalTok{, seed}\OperatorTok{=}\VariableTok{None}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

将数据生成器用于某些示例数据。

它基于一组样本数据，计算与数据转换相关的内部数据统计。

当且仅当 \texttt{featurewise\_center} 或
\texttt{featurewise\_std\_normalization} 或 \texttt{zca\_whitening}
设置为 True 时才需要。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{x}: 样本数据。秩应该为 4。对于灰度数据，通道轴的值应该为
  1；对于 RGB 数据，值应该为 3。
\item
  \textbf{augment}: 布尔值（默认为 False）。是否使用随机样本扩张。
\item
  \textbf{rounds}: 整数（默认为
  1）。如果数据数据增强（augment=True），表明在数据上进行多少次增强。
\item
  \textbf{seed}: 整数（默认 None）。随机种子。
\end{itemize}


\hypertarget{flow}{%
\paragraph{flow}\label{flow}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.flow(x, y}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                                  batch_size}\OperatorTok{=}\DecValTok{32,}
\NormalTok{                                  shuffle}\OperatorTok{=}\VariableTok{True,}
\NormalTok{                                  sample_weight}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                                  seed}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                                  save_to_dir}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                                  save_prefix}\OperatorTok{=}\StringTok{'',}
\NormalTok{                                  save_format}\OperatorTok{=}\StringTok{'png',}
\NormalTok{                                  subset}\OperatorTok{=}\VariableTok{None}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

采集数据和标签数组，生成批量增强数据。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{x}: 输入数据。秩为 4 的 Numpy
  矩阵或元组。如果是元组，第一个元素应该包含图像，第二个元素是另一个
  Numpy 数组或一列 Numpy
  数组，它们不经过任何修改就传递给输出。可用于将模型杂项数据与图像一起输入。对于灰度数据，图像数组的通道轴的值应该为
  1，而对于 RGB 数据，其值应该为 3。
\item
  \textbf{y}: 标签。
\item
  \textbf{batch\_size}: 整数 (默认为 32)。
\item
  \textbf{shuffle}: 布尔值 (默认为 True)。
\item
  \textbf{sample\_weight}: 样本权重。
\item
  \textbf{seed}: 整数（默认为 None）。
\item
  \textbf{save\_to\_dir}: None 或 字符串（默认为
  None）。这使您可以选择指定要保存的正在生成的增强图片的目录（用于可视化您正在执行的操作）。
\item
  \textbf{save\_prefix}: 字符串（默认
  \texttt{\textquotesingle{}\textquotesingle{}}）。保存图片的文件名前缀（仅当
  \texttt{save\_to\_dir} 设置时可用）。
\item
  \textbf{save\_format}: ``png'', ``jpeg'' 之一（仅当
  \texttt{save\_to\_dir} 设置时可用）。默认：``png''。
\item
  \textbf{subset}: 数据子集 (``training'' 或 ``validation'')，如果 在
  \texttt{ImageDataGenerator} 中设置了 \texttt{validation\_split}。
\end{itemize}

\textbf{返回}

一个生成元组 \texttt{(x,\ y)} 的 Iterator，其中 \texttt{x} 是图像数据的
Numpy 数组（在单张图像输入时），或 Numpy
数组列表（在额外多个输入时），\texttt{y} 是对应的标签的 Numpy 数组。如果
`sample\_weight' 不是 None，生成的元组形式为
\texttt{(x,\ y,\ sample\_weight)}。如果 \texttt{y} 是 None, 只有 Numpy
数组 \texttt{x} 被返回。


\hypertarget{flow_from_directory}{%
\paragraph{flow\_from\_directory}\label{flow_from_directory}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.flow_from_directory(directory, target_size}\OperatorTok{=}\NormalTok{(}\DecValTok{256,}\DecValTok{256}), 
\NormalTok{                            color_mode}\OperatorTok{=}\StringTok{'rgb',}
\NormalTok{                            classes}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                            class_mode}\OperatorTok{=}\StringTok{'categorical',}
\NormalTok{                            batch_size}\OperatorTok{=}\DecValTok{32,}
\NormalTok{                            shuffle}\OperatorTok{=}\VariableTok{True,}
\NormalTok{                            seed}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                            save_to_dir}\OperatorTok{=}\VariableTok{None,}
\NormalTok{                            save_prefix}\OperatorTok{=}\StringTok{'',}
\NormalTok{                            save_format}\OperatorTok{=}\StringTok{'png',}
\NormalTok{                            follow_links}\OperatorTok{=}\VariableTok{False,}
\NormalTok{                            subset}\OperatorTok{=}\VariableTok{None, }
\NormalTok{                            interpolation}\OperatorTok{=}\StringTok{'nearest'}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{directory}:
  目标目录的路径。每个类应该包含一个子目录。任何在子目录树下的 PNG, JPG,
  BMP, PPM 或 TIF 图像，都将被包含在生成器中。更多细节，详见
  \href{https://gist.github.com/fchollet/\%20\%20\%20\%20\%20\%20\%20\%200830affa1f7f19fd47b06d4cf89ed44d}{此脚本}。
\item
  \textbf{target\_size}: 整数元组
  \texttt{(height,\ width)}，默认：\texttt{(256,\ 256)}。所有的图像将被调整到的尺寸。
\item
  \textbf{color\_mode}: ``grayscale'', ``rbg''
  之一。默认：``rgb''。图像是否被转换成 1 或 3 个颜色通道。
\item
  \textbf{classes}: 可选的类的子目录列表（例如
  \texttt{{[}\textquotesingle{}dogs\textquotesingle{},\ \textquotesingle{}cats\textquotesingle{}{]}}）。默认：None。如果未提供，类的列表将自动从
  \texttt{directory} 下的 子目录名称/结构
  中推断出来，其中每个子目录都将被作为不同的类（类名将按字典序映射到标签的索引）。包含从类名到类索引的映射的字典可以通过
  \texttt{class\_indices} 属性获得。
\item
  \textbf{class\_mode}: ``categorical'', ``binary'', ``sparse'',
  ``input'' 或 None
  之一。默认：``categorical''。决定返回的标签数组的类型：

  \begin{itemize}
  \tightlist
  \item
    ``categorical'' 将是 2D one-hot 编码标签，
  \item
    ``binary'' 将是 1D 二进制标签，``sparse'' 将是 1D 整数标签，
  \item
    ``input'' 将是与输入图像相同的图像（主要用于自动编码器）。
  \item
    如果为 None，不返回标签（生成器将只产生批量的图像数据，对于
    \texttt{model.predict\_generator()},
    \texttt{model.evaluate\_generator()} 等很有用）。请注意，如果
    \texttt{class\_mode} 为 None，那么数据仍然需要驻留在
    \texttt{directory} 的子目录中才能正常工作。
  \end{itemize}
\item
  \textbf{batch\_size}: 一批数据的大小（默认 32）。
\item
  \textbf{shuffle}: 是否混洗数据（默认 True）。
\item
  \textbf{seed}: 可选随机种子，用于混洗和转换。
\item
  \textbf{save\_to\_dir}: None 或 字符串（默认
  None）。这使你可以最佳地指定正在生成的增强图片要保存的目录（用于可视化你在做什么）。
\item
  \textbf{save\_prefix}: 字符串。 保存图片的文件名前缀（仅当
  \texttt{save\_to\_dir} 设置时可用）。
\item
  \textbf{save\_format}: ``png'', ``jpeg'' 之一（仅当
  \texttt{save\_to\_dir} 设置时可用）。默认：``png''。
\item
  \textbf{follow\_links}: 是否跟踪类子目录中的符号链接（默认为 False）。
\item
  \textbf{subset}: 数据子集 (``training'' 或 ``validation'')，如果 在
  \texttt{ImageDataGenerator} 中设置了 \texttt{validation\_split}。
\item
  \textbf{interpolation}:
  如果目标尺寸与加载图像的尺寸不同，则使用插值方法重新采样图像。
  支持的方法有 ``nearest'', ``bilinear'', and ``bicubic''. 如果安装了
  1.1.3 以上版本的 PIL，还支持 ``lanczos''。 如果安装了 3.4.0 以上版本的
  PIL，还支持 ``box'' 和 ``hamming''。默认使用 ``nearest''。
\end{itemize}

\textbf{返回}

一个生成 \texttt{(x,\ y)} 元组的 \texttt{DirectoryIterator}，其中
\texttt{x} 是一个包含一批尺寸为
\texttt{(batch\_size,\ *target\_size,\ channels)}的图像的 Numpy
数组，\texttt{y} 是对应标签的 Numpy 数组。


\hypertarget{get_random_transform}{%
\paragraph{get\_random\_transform}\label{get_random_transform}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.get_random_transform(img_shape, seed}\OperatorTok{=}\VariableTok{None}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

为转换生成随机参数。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{seed}: 随机种子
\item
  \textbf{img\_shape}: 整数元组。被转换的图像的尺寸。
\end{itemize}

\textbf{返回}

包含随机选择的描述变换的参数的字典。


\hypertarget{random_transform}{%
\paragraph{random\_transform}\label{random_transform}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.random_transform(x, seed}\OperatorTok{=}\VariableTok{None}\NormalTok{)}
\end{Highlighting}
\end{Shaded}

将随机变换应用于图像。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{x}: 3D 张量，单张图像。
\item
  \textbf{seed}: 随机种子。
\end{itemize}

\textbf{返回}

输入的随机转换版本（相同形状）。


\hypertarget{standardize}{%
\paragraph{standardize}\label{standardize}}

\begin{Shaded}
\begin{Highlighting}[]
\NormalTok{keras.preprocessing.image.standardize(x)}
\end{Highlighting}
\end{Shaded}

将标准化配置应用于一批输入。

\textbf{参数}

\begin{itemize}
\tightlist
\item
  \textbf{x}: 需要标准化的一批输入。
\end{itemize}

\textbf{返回}

标准化后的输入。



\newpage
